package com.wxx.回文数;

/**
 * @author: Jetwang
 * @date: 2022/3/15 18:33
 * @description: Solution
 * 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
 * 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。
 * @version: 1.0
 */
public class Solution {
    public static boolean isPalindrome01(int x) {
       // 如果是负数 肯定不是回文数
        if (x < 0) {
            return false;
        }
        /*
        依次从后面取出每个数，在将这个数×10还原成倒序数
        取出个位数  x % 10
        取数十位数  x / 10 % 10
        取出百位数  x / 10 / 10 % 10
        依次...
         */
        int y = 0;
        int temp = x;
        while (temp != 0) {
            y = y * 10 + temp % 10;
            temp /= 10;
        }
        return x == y;
    }

    /**
     * 解法二 ： 转为字符串进行比较
     * @param x
     * @return
     */
    public static boolean isPalindrome02(int x) {
        if (x < 0) {
            return false;
        }
        String str = String.valueOf(x);
        int first = 0;
        int last = str.length() - 1;
        while (first < last) {
            if (str.charAt(first) != str.charAt(last)) {
                return false;
            }
            first++;
            last--;
        }
        return true;
    }

    public static void main(String[] args) {
        boolean isPalindrome01 = isPalindrome01(100001);
        boolean isPalindrome02 = isPalindrome02(100001);
        System.out.println(isPalindrome01);
        System.out.println(isPalindrome02);
    }
}
